#pragma once

#include "DAEFloat3.h"
/**
* Describes a ray that can be used to pick objects.
* @author Koen Samyn
*/
class Ray
{
public:
	/**
	* Creates a new ray with the provided origin and direction.
	* @param origin the origin for the ray.
	* @param direction the direction for the ray.
	*/
	Ray(DAEFloat3 origin, DAEFloat3 direction);
	/**
	* Destroys the ray object.
	*/
	virtual ~Ray(void);
	/**
	* The origin of the ray.
	*/
	DAEFloat3 m_Origin;
	/**
	* The direction of the ray.
	*/
	DAEFloat3 m_Direction;
	/**
	* The inverse of the ray direction: 1/x, 1/y, 1/z
	*/
	DAEFloat3 m_InvDirection;
	/**
	* The sign of the direction of the ray.
	*/
	int m_Sign[3];
};
